attribute float index;

varying float alphe;

uniform float uTime;
uniform float uPointTotalNum;
uniform float uSpeed;
uniform float uSize;
uniform float uSegments;

void main() {
	//根据时间重新计算当前index（从0到500减去一个定值）
	float currentIndex = index - uTime * 50. * uSpeed;
	//上一步计算的得到的index按照分段数，重新计算index（例：分段数为2，index对250取整）
	float segmentation = mod( currentIndex, uPointTotalNum / uSegments);
	//归一化数值生成alphe
	alphe = segmentation  / (uPointTotalNum / uSegments);
	//模视矩阵得到点的模视坐标
	vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
	//根据点的深度（点到屏幕的距离，在相机前面为负值）算出点的大小
	gl_PointSize = 40. * uSize / -mvPosition.z * alphe;
	//点在屏幕的位置
	gl_Position = projectionMatrix * mvPosition;

}